$(function() {

	sicload();
	
	// Reload del listado de casos (temporal)
	if($('[data-section=casos]').length) {
		url = $('#url').text();
		setInterval(function() {
			$('.content').load(url, function() {
				sicload();
			});
		}, 1 * 60 * 1000);
	}
	
	
});


function sicload() {

// GENERAL      ................................................................................................


	$('a', '.sso').live("contextmenu", function(e) {
		e.preventDefault();
		obj = $(this).next()
		obj.removeClass('hide');
	});

	$('.sso').live("mouseleave", function() {
		$(this).find('.contextual').addClass('hide');
	});

	// Muestro "adjuntar archivos"
	if($('#componer').length) {
		createUploader();
	}



	$(window).jkey('ctrl+alt+b', function() {
		openSearch();
	});
	
	
	// Shortcuts del teclado
	
	$('[data-shortcut]').each(function() {
		var cut = $(this);
		$(window).jkey(cut.attr('data-shortcut'), function(){
			if (cut.attr('href'))
				window.location.href = cut.attr('href');
			else
				cut.trigger('click');
		});
	});


	
	/**
	 * Abre el panel de respuesta
	 */	
	$('[data-action="responder"]').click(function(e) {
		e.preventDefault();
		var id_usuario = $('#id_usuario').attr('value');
		// Chequeo si no esta siendo respondido
		var caso = $('input[name="info[casos][]"]:checked').val();
		$.getJSON('/ajax/class/Caso/siendo_respondido/' + caso, function(data) {
			if ((data) && (data.id_usuario != id_usuario)) {
				$.modal.alert('El caso esta siendo respondido por otro operador.');
			} else {
				// Muestro el cuadro de respuesta
				$('[data-content="responder"]').removeClass('hide');
				// Scroll
				pos = $('.comment').position();
				$("html,body").scrollTop(pos.top - 15);
				// Focalizo
				if (window.FCKeditorAPI) {
					var oFCKeditor = FCKeditorAPI.GetInstance('editor');
					oFCKeditor.Focus();
				} else {
					$('textarea:visible').first().focus();
				}
				// Marco el caso "como siendo respondido"
				$.get('/ajax/class/Caso/siendo_respondido/' + caso + '/1');
			}
		});
	}); 
	 
	 
	 

	
	/* Modal boxes */
	$('[data-modal]').modal();
	
	
	/**
	 * Modal box de asociar tags / tareas
	 */	
	$('form').delegate('[data-load]', 'click', function(e) {
	
		// Inicializar
		e.preventDefault();
		var dif = false;
		var obj = $(this);
		var form = obj.parents('form');
		var checkbox = form.find('input[name="info[casos][]"]:checked');
		var url = form.find('input[name="info[url]"]').val();
		
		// Si no hay casos seleccionados, corto
		if (checkbox.length === 0)
			return false;
		
		// Tomo el area principal
		var area = checkbox.first().attr('data-area');
		
		// Para aplicar tags chequeo que sean de la misma area
		if (obj.attr('data-load') === 'tags') {
			checkbox.each(function() {
				if ($(this).attr('data-area') != area) {
					dif = true;
				}
			});
		}
		
		// Corto el proceso o muestro la ventana de edicion de tags / tareas
		if (dif) {
			$.modal.alert('Para asignar ' + obj.attr('data-load') + ' a un grupo de casos, todos deben pertenecer a la misma area.');
			return false;
		} else {
			$.modal.load('/sic/modal/' + obj.attr('data-load') + '/?' + checkbox.serialize() + '&info[url]=' + url + '&area=' + area);
			return false;
		}

	});

	/**
	 * Confirmar el envio de los formularios en acciones masivas
	 */
	$('form').delegate('button[data-action=confirm]', 'click', function(e) {
		
		// Inicializar
		e.preventDefault();
		var obj = $(this);
		var mensaje = '\u00BFSeguro que desea ';
		var cantidad = ' este caso?';
		var form = obj.parents('form');
		
		// Preparo el mensaje
		if (form.find('input[type=checkbox]:checked').length === 0)
			return false;
		if (form.find('input[type=checkbox]:checked').length > 1)
			cantidad = ' estos casos?';
		mensaje = mensaje + $(this).attr('value') + cantidad;
		
		// Muestro el confirm box
		$.modal.confirm(mensaje, function(r) {
			form.append('<input type="hidden" name="' + obj.attr('name') + '" value="' + obj.val() + '"/>');
			form.submit();
		});

	});
	

	if ($('body').hasClass('dinamic')) {

		/* editor html */
		editor('[data-role=editor]');

		/* datepickers */
		if($('[data-role=datepicker]').length) {
			$("[data-role='datepicker']").datepicker({
				dateFormat: 'yy-mm-dd',
				dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
				monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']
			});
		}	

		/**
		 * Convierte un select en un menu con estilo de boton
		 */
		$('[data-role=selectmenu]').selectmenu();  
		
		/**
		 * Envia el formulario en cuanto el selectmenu cambia
		 */
		$('[data-role=selectmenu]').change(function() {
			$('[data-event=' + $(this).attr('data-trigger') + ']').trigger('click');
		});

	}
	
	/* datepickers */
	if($('[data-role=datepicker]').length) {
		$("[data-role='datepicker']").datepicker({
			dateFormat: 'yy-mm-dd',
			dayNamesMin: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
			monthNames: ['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']
		});
	}	

	
	
	/**
	 * Selecciona todos los checkbox
	 */
	$('[data-action="selectall"]').live('click', function() {
		checkboxes = $('[data-action="selectall"]').parents('.selectable').find('input[type="checkbox"]');
		if ($(this).attr('checked')) {
			checkboxes.attr('checked', 'checked').parents('tr, li').addClass('selected');
			$('#acciones').removeClass('disable');
		} else {
			checkboxes.removeAttr('checked').parents('tr, li').removeClass('selected');
			$('#acciones').addClass('disable');
		}
	});

	/**
	 * Cambia el color de las celdas seleccionadas
	 */
	$(':checkbox', '.selectable').change(function() {
		$(this).parents('tr, li').toggleClass('selected');
		if ($(':checkbox:checked').length)
			$('#acciones').removeClass('disable');
		else
			$('#acciones').addClass('disable');
	});
	

	/**
	 * Expandir mensaje
	 */
	$('[data-action="expandmessage"]').live('click', function(e) {
		$(this).remove();
		e.preventDefault();
		var message = $(this).attr('data-info');
		$.get('/ajax/class/mensajes/contenido/' + message, function(data){
			$('[data-resumen=' + message + ']').html(data).removeClass('ghost');
		});
	});
	
	/**
	 * Cancelar respuesta
	 */
	$('[data-action="cancelanswer"]').live('click', function(e) {
		// Cierro el cuadro de respuesta
		$('[data-content="responder"]').addClass('hide');
		// Desmarco el caso de "siendo respondido"
		var caso = $('input[name="info[casos][]"]:checked').val();
		$.get('/ajax/class/Caso/siendo_respondido/' + caso + '/0', function() {
			window.location.reload();
		});
	});
	
	
	/**
	 * Convierte el editor en HTML
	 */
	$('[data-action="htmleditor"]').live('click', function(e) {
		$(this).remove();
		$('#type').attr('value', 'html');
		$('#editor').attr('data-role','editor');
		editor('[data-role=editor]');
	});
	
	
	
	
	
	
	/**
	 * Abre o cierra un contenido
	 */
	$('[data-toggle]').live('click', function() {
		$(this).toggleClass('bold');
		content = $(this).attr('data-toggle');
		$('[data-content=' + content + ']').toggleClass('hide').find('input').first().focus();
		return false;
	});


	/* Inserta un modelo */	
		
	$('a[data-modelo]', '.modelos').live('click', function(e) {
		e.preventDefault();
		var html  = $(this).next().html();
		if (window.FCKeditorAPI) {
			var editor = FCKeditorAPI.GetInstance('editor');
			editor.InsertHtml(html);
		} else {
			var editor = $('textarea:visible').first();
			editor.val(html + editor.val()).focus();
		}
		$.modal.close();
	});


	/* Oculta los quotes */
	if ($('blockquote').length) {
		$('blockquote').each(function(index) {
			$(this)
				.attr('data-content', 'quote-' + index)
				.addClass('hide')
				.before('<div class="showquote" data-toggle="quote-' + index + '">- Contenido citado -</div>');
		});
	}
	

	/* Envia un comentario */

	$('input','[data-content="comentar"]').keypress(function(e) {
		if (e.keyCode == 13) {
		
			var input = $(this);
			var mensaje = $(this).attr('data-mensaje');
			var comentario = $(this).attr('value').replace('?', ',');
			comentario = comentario.replace('/', '-');
			var comentador = $('#sso').attr('value');
			
			input.addClass('ghost');
			
			$.ajax({
				url: '/ajax/class/Comentarios/agregar/' + encodeURIComponent(comentario) + '/' + mensaje + '/',
				success: function(data) {
					if (data) {
						$('ul.comments:first').show().append('<li><a href="/sic/usuarios/perfiles/ver/' + comentador + '">' + comentador + '</a>&middot <span class="mini ghost"> Hace instantes </span> &middot; <span>' + comentario +'</span></li>');
						input.attr('value', '').removeClass('ghost');
					} else {
						alert('Error: el comentario no pudo insertarse.');
					}
				},
				timeout: 30 * 1000,
				error: function() {
					alert('Error: el comentario no pudo insertarse.');
				}
			});
			
		}
	});


	// Muestra buscar por estado
	$('[data-tab]').live('click', function() {
		var tabs = $(this).parents('[data-tabs]');
		var tab = $(this).attr('data-tab');
		tabs.find('[data-tab-content]').addClass('hide');
		tabs.find('[data-tab-content=' + tab + ']').removeClass('hide');
	});
	

	
	
	
	
// ADJUNTAR FACTURAS   ...............................................................................................
	
	
	/* Cambia el valor del SSO de la ventana modal para adjuntar facturas */
	$('#to').live('change', function() {
		$('[data-modal=adjuntar]').attr('rel', '/sic/modal/adjuntar/?cliente=' + $(this).attr('value'));
	});
	
	/* Inserta una factura */		
	$('a[data-factura]', '.facturas').live('click', function(e) {
		e.preventDefault();
		var id = $(this).attr('data-factura');
		var numero = $(this).attr('data-numero');
		if ($('#componer').length) {
			$('#componer').append('<input type="hidden" name="data[adjuntos][]" value="/ajax/class/Factura/pdf/' + id + '.pdf"/>');
			$('<li>' + id + '.pdf</li>').appendTo('.qq-upload-list');
		}
		$.modal.close();
	});
	
	


// SIDEBAR CASOS     ................................................................................................

	/**
	 * Abre o cierra una carpeta
	 */
	$('[data-role=folder]').click(function(e) {
		e.preventDefault();
		if ($(this).attr('data-status') == 'open') {
			// Cierra
			$(this)
				.attr('data-status', 'closed')
				.toggleClass('active')
				.next()
				.slideUp();
		} else {
			// Abre
			$(this)
				.attr('data-status', 'open')
				.toggleClass('active')
				.next()
				.slideDown();
			setCookie('folder', $(this).attr('data-area'));
		}
		return false;
	});
	
	
// SIDEBAR CASO     ................................................................................................	

	var infoprofile = false;

	$('[data-role="folder"]', '.profile').click(function() {
	
		var sso = $('[data-sso]').attr('data-sso');

		if (!infoprofile) {
		
			infoprofile = true;
			
			$.getJSON('/ajax/class/SSO/info/' + sso, function(obj) {
			
				if (obj) {
				
					// Direccion
					var cont = '', place = ['direccion', 'ciudad', 'provincia', 'cp', 'pais'];
					for (i = 0; i < place.length; i++)
						if (obj.data[place[i]])
							cont += '<li>' + obj.data[place[i]] + '</li>';
					$('[data-place="domicilio"]').html(function() {
						if (cont != '') return cont; else return '<li>No ingresado</li>';
					});
					
					// Redes sociales
					var cont = '', place = ['twitter', 'facebook'];
					for (i = 0; i < place.length; i++)
						if (obj.data[place[i]])
							cont += '<li>' + obj.data[place[i]] + '</li>';
					$('[data-place="redes"]').html(function() {
						if (cont != '') return cont; else return '<li>No ingresado</li>';
					});

					// Telefono
					$('li', '[data-place="telefono"]').html(function() {
						if (obj.data.telefono) return ('<dd>' + obj.data.telefono + '</dd> &middot; <a data-action="call">Llamar</a>'); else return 'No ingresado';
					});
				
				};
			
			});
			
			$.get('/includes/controller/sidebar.cuentas.php?id=' + sso, function(info) {
				$('.cuentas').html(info);
				$('a[data-modal]', '.cuentas').modal();
			});
			
		
		}

	});
	
	// Click to call
	$('.profile').delegate('[data-action="call"]', 'click', function() {
		var destino = $('[data-action="call"]').prev().text();
		$.get('/sic/modal/llamada/?destino=' + destino);
	});
	
	
	
	
	if($('#colorpicker').length) {
		// Color picker
		$('#colorpicker').farbtastic('#color');
	}
	
	
	
	// Focus en el primer campo
	// $('input:visible, select:visible', '.main').first().focus();

	// Buscar
	$('input', '.search').live('click', function() {
		openSearch();
	});
	
	
	/* Ajusta el alto del iframe de la factura */
	$(".factura").load(function() {
		$(this).height($(this).contents().find("html").height());
	});

	
	/* Crea un mapa */ 
	if ($('[data-role="map"]').length) {
		geocoder = new google.maps.Geocoder();
		var myOptions = {
			zoom: 14,
			mapTypeId: google.maps.MapTypeId.ROADMAP
		};
		map = new google.maps.Map($('[data-role="map"]').first()[0], myOptions);
		var address = $('[data-role="adress"]').attr('value');
		geocoder.geocode( { 'address': address}, function(results, status) {
			if (status == google.maps.GeocoderStatus.OK) {
				map.setCenter(results[0].geometry.location);
				var marker = new google.maps.Marker({
					map: map, 
					position: results[0].geometry.location
				});
			}
		});
	}
	
	
	/* Crea un calendario */
	if ($('[data-role="calendar"]').length) {
		$('[data-role="calendar"]').fullCalendar({
			header: {
				left: 'title',
				right: 'today month,basicWeek,agendaDay prev,next'
			},
			buttonText: {
				today: 'hoy',
				month: 'mes',
				week: 'semana',
				day: 'dia'
			},
			allDayText: 'Todo el dia',
			defaultView: 'month',
			titleFormat: {
				month: 'MMMM yyyy',                             // September 2009
				week: "MMMM d { '&middot;' [ MMMM ]d } ",	// Sep 7 - 13 2009
				day: 'dddd d MMMM, yyyy'                  		// Tuesday, Sep 8, 2009
			},
			editable: true,
			events: "/ajax/class/Citas/fullcalendar/",
			aspectRatio: 3,
			monthNames: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto', 'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
			monthNamesShort: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
			dayNames: ['Domingo', 'Lunes', 'Martes', 'Miercoles', 'Jueves', 'Viernes', 'Sabado'],
			dayNamesShort: ['Dom', 'Lun', 'Mar', 'Mie', 'Jue', 'Vie', 'Sab']
		});
	}
	
	
	/* Crea una tabla ordenable */ 
	if ($('[data-role="datatable"]').length) {
		$('[data-role="datatable"]').dataTable({
			"bStateSave": true,
			"sPaginationType": "full_numbers",
			"oLanguage": {
				"sLengthMenu": "_MENU_",
				"sSearch": "",
				"oPaginate": {
					"sPrevious": "&laquo; Anterior",
					"sNext":     "Siguiente &raquo;",
					"sFirst":    "Inicio",
					"sLast":     "Fin",
				},
				"sZeroRecords": "No hay resultados para mostrar",
				"sInfo": "Viendo _START_ - _END_ de _TOTAL_ resultados",
				"sInfoFiltered": "(entre _MAX_ resultados en total)"
			}
		});
		
		$('input', '#table_filter').attr('placeholder', 'Search...');
	};
	
	// Tooltip
//	$("[title]").tooltip();

}



function openSearch() {
	$('input', '.search').animate({width: 200}, 400, 'easeOutExpo').focus();
}




/* ADJUNTAR
**************************************************************************************************/

	/**
	 * Crea un uploader para subir archivos adjuntos via Ajax
	 */
	function createUploader() {
		var uploader = new qq.FileUploader({
			// pass the dom node (ex. $(selector)[0] for jQuery users)
			element: document.getElementById('file-uploader'),
			onComplete: function(id, fileName, responseJSON){
				$('#componer').append('<input type="hidden" name="data[adjuntos][]" value="/uploads/' + fileName + '"/>');
			},
			// path to server-side upload script
			action: '/includes/controller/adjuntar.php'
		});
	}	
	
	
	
function editor(obj) {
	$(obj).fck({
		path: '/js/fckeditor/',
		toolbar: 'SIC',
		height: $(obj).css('height'),
		width: '100%'
	});
};

	
function setCookie(c_name,value) {
	var exdays = 365;
	var exdate = new Date();
	exdate.setDate(exdate.getDate() + exdays);
	var c_value = escape(value) + ((exdays == null) ? "" : "; expires=" + exdate.toUTCString() + "; path=/");
	document.cookie = c_name + "=" + c_value;
}
	
function getScrollY() {
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
		//Netscape compliant
		scrOfY = window.pageYOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
		//DOM compliant
		scrOfY = document.body.scrollTop;
	} else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
		//IE6 standards compliant mode
		scrOfY = document.documentElement.scrollTop;
	}
	return scrOfY;
}

function toggleSidebar() {
	$('.sidebar').animate({opacity:'toggle'});
}


/*

obj = $('fieldset:last');
html = obj.clone();
$('input', html).each(function() {
	var name = $(this).attr('name');
	var patt = /[\[0-9\]]+/g;
	var result = patt.exec(name);
	name.replace(/[\[0-9\]]+/g, result + 1);
    console.log(result);
});
obj.after(html);

*/
